package homeword;
import java.util.Scanner;

/**
 * 字符串规则验证器
 * 
 * 验证规则：
 * 1. 字符串长度必须为5
 * 2. 必须包含4位字母（大小写均可）和1位数字
 * 3. 数字可以出现在任意位置
 * 
 * 示例：
 * 有效输入: "abc1d", "1abcd", "abcd9"
 * 无效输入: "abcde"(无数字), "12345"(无字母), "ab12c"(数字过多)
 * 
 * @author MR
 * @version 1.0
 */
public class PascalCase {
    /**
     * 主方法：程序入口
     * 接收用户输入并验证字符串是否符合规则
     * 
     * @param args 命令行参数（未使用）
     */
    public static void main(String[] args) {
        System.out.println("请输入一个字符串，要求：");
        System.out.println("1：长度为 5");
        System.out.println("2：内容中是四位字母，1 位数字。");
        System.out.println("3：其中数字只有 1 位，但是可以出现在任意的位置。");
        
        Scanner sc = new Scanner(System.in);
        String input = sc.next();
        if(input.length()==5) {
            //判断是否是有数字，且是否是只有一位
            if (!number(input) || !a(input)) {
                System.out.println("输入正确！");
            } else {
                System.out.println("输入错误，请检查您是否按照要求进行输入，（数字过多或者是字母过少）");
            }
        }
        else{
            System.out.println("输入错误，请检查您是否按照要求进行输入(输入的长度错误)");
        }
    }
    /**
     * 验证字符串中数字的数量是否符合要求
     * 
     * 检查字符串中的数字数量是否恰好为1位
     * - 如果数字数量大于1，返回true（表示不符合要求）
     * - 如果数字数量小于等于1，返回false（符合要求）
     * 
     * @param input 要验证的字符串
     * @return 数字数量是否不符合要求（大于1位）
     */
    public static boolean number(String input) {
        int count = 0;
        for (int i = 0; i < input.length(); i++) {
            if (input.charAt(i) > '0' && input.charAt(i) < '9') {
                count++;
            }
        }
        return count > 1;  // 如果数字数量大于1，返回true（表示验证失败）
    }
    /**
     * 验证字符串中字母的数量是否符合要求
     * 
     * 检查字符串中的字母数量是否恰好为4位
     * - 如果字母数量不等于4，返回true（表示不符合要求）
     * - 如果字母数量等于4，返回false（符合要求）
     * 
     * @param input 要验证的字符串
     * @return 字母数量是否不符合要求（不等于4位）
     */
    public static boolean a(String input) {
        int count = 0;
        for (int i = 0; i < input.length(); i++) {
            if ((input.charAt(i) > 'a' && input.charAt(i) < 'z') || 
                (input.charAt(i) > 'A' && input.charAt(i) < 'Z')) {
                count++;
            }
        }
        return count != 4;  // 如果字母数量不等于4，返回true（表示验证失败）
    }
}
